// rtm_message_mixin.dart
import 'package:agora_rtm/agora_rtm.dart';

/// RTM 消息监听 Mixin 基类
mixin RtmMessageMixin {
  /// 消息监听器列表
  final List<void Function(MessageEvent)> _rtmMessageListeners = [];

  /// 添加消息监听器
  void addRtmMessageListener(void Function(MessageEvent) listener) {
    _rtmMessageListeners.add(listener);
  }

  /// 移除消息监听器
  void removeRtmMessageListener(void Function(MessageEvent) listener) {
    _rtmMessageListeners.remove(listener);
  }

  /// 触发消息事件（供RTM回调内部调用）
  void _triggerRtmMessageEvent(MessageEvent event) {
    for (final listener in _rtmMessageListeners) {
      listener(event);
    }
  }

  /// 需要子类实现的抽象方法：绑定RTM客户端
  RtmClient get rtmClient;

  /// 初始化消息监听（需在RTM客户端就绪后调用）
  void initRtmMessageListener() {
    rtmClient.addListener(
      message: (MessageEvent event) {
        _triggerRtmMessageEvent(event);
      },
    );
  }

  /// 清理监听器（在dispose时调用）
  void disposeRtmMessageListeners() {
    _rtmMessageListeners.clear();
  }
}
